package com.soft.javase.ch10.test.stream;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * @author wangzhisen
 * @Desc TODO
 * @date 2025/5/7
 */
class Person {
    private String name;

    public Person(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Person{name='" + name + "'}";
    }
}

public class TeamProcessing {
    public static void main(String[] args) {
        // 初始队伍数据
        List<String> team1 = Arrays.asList("张三", "李四", "王五", "赵六", "孙七", "周八", "吴九");
        List<String> team2 = Arrays.asList("张飞", "关羽", "刘备", "赵云", "张辽", "诸葛亮", "张苞");

        // 处理流程
        List<Person> combinedTeam = Stream.concat(
                        // 处理第一个队伍
                        team1.stream()
                                .filter(name -> name.length() == 3)  // 1. 只要名字为3个字的成员
                                .limit(3),                           // 2. 只要前3个人

                        // 处理第二个队伍
                        team2.stream()
                                .filter(name -> name.startsWith("张")) // 3. 只要姓张的成员
                                .skip(2)                              // 4. 不要前2个人
                )
                .map(Person::new)                            // 6. 根据姓名创建Person对象
                .collect(Collectors.toList());              // 5. 合并为一个队伍

        // 7. 打印整个队伍的Person对象信息
        combinedTeam.forEach(System.out::println);
    }
}
